package com.hptpd.questionnairesurvey.vo;

import com.fasterxml.jackson.databind.ser.Serializers;
import com.google.common.collect.Lists;
import com.hptpd.questionnairesurvey.domain.Dimensionality;
import com.hptpd.questionnairesurvey.domain.Questionnaire;
import com.hptpd.questionnairesurvey.domain.question.BaseQuestion;
import com.hptpd.questionnairesurvey.utils.AbstractMyBeanUtils;
import com.hptpd.questionnairesurvey.utils.DateUtil;
import lombok.Data;

import java.util.*;

/**
 * \* Created with IntelliJ IDEA.
 * \* Date: 2019/9/17
 * \*
 * \* Description:
 * \
 *
 * @author walter_long
 */
@Data
public class QuestionnaireVo{
    private String id;

    private String name;

    private String tag;

    private String state;

    private Date createdAt;

    private String createTime;

    private List<DimensionalityVo> dimensions = Lists.newLinkedList();

    private List<QuestionVo> questions = Lists.newLinkedList();

    public void sortQuestions() {
        questions.sort(new Comparator<QuestionVo>() {
            @Override
            public int compare(QuestionVo o1, QuestionVo o2) {
                if (o1.getSort() > o2.getSort()) {
                    return 1;
                } else if (o1.getSort().equals(o2.getSort())) {
                    return 0;
                } else {
                    return -1;
                }
            }
        });
    }

    public static List<QuestionnaireVo> convertQuestionnaire(List<Questionnaire> questionnaires) {
        List<QuestionnaireVo> questionnaireVos = Lists.newLinkedList();
        for (Questionnaire questionnaire : questionnaires) {
            questionnaireVos.add(convertQuestionnaire(questionnaire));
        }
        return questionnaireVos;
    }

    public static QuestionnaireVo convertQuestionnaire(Questionnaire questionnaire) {
        if (null == questionnaire) {
            return null;
        }
        QuestionnaireVo questionnaireVo = new QuestionnaireVo();
        AbstractMyBeanUtils.copyProperties(questionnaire, questionnaireVo);
        questionnaireVo.setCreateTime(DateUtil.dateToString(questionnaireVo.getCreatedAt()));
        /**
         * 排除子维度
         */
        for (Dimensionality dimensionality :
                questionnaire.getDimensionalities()) {
            if (dimensionality.getParentDimensionality() == null) {
                questionnaireVo.getDimensions().add(DimensionalityVo.toVo(dimensionality, questionnaireVo));
            }
        }

        //加入没维度绑定的题目
        List<BaseQuestion> baseQuestions = questionnaire.getBaseQuestions();
        for (BaseQuestion question : baseQuestions) {
            if (null == question.getDimensionality()) {
                QuestionVo.toVo(question, questionnaireVo, null);
            }
        }
        //questionnaireVo.setDimensions(DimensionalityVo.toVos(questionnaire.getDimensionalities(), questionnaireVo));
        return questionnaireVo;
    }
}
